home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / Z-Misc Series / (k)zn.d64 / proc.graph < prev    next >
Text File  |  2007-03-01  |  7KB  |  211 lines

  1. 0010 ╨╥╧├ GRAPH(TYPE,╥┼╞ VALUES(,),╥┼╞ SCALE(,),╥┼╞ LABELS$()) ├╠╧╙┼─
  2. 0020   // ┴.├.═ILLEST - 22.4.86 VERSION
  3. 0030   // VALUES(0,2):=0 FOR NO GRID
  4. 0040   // '^' IDICATES ITEM EXCEEDS SCALE
  5. 0050   // PENUP:NO AXES DRAWN(EXCEPT ZERO CROSS AXES - 1.7.86)
  6. 0060   // SPLITSCREEN CLEARS DISPLAY (REPLACES GRID) LEAVING 'X' 'Y' AXES
  7. 0070   ╒╙┼ GRAPHICS
  8. 0080   GRAPHICSCREEN(0)
  9. 0090   ╒╙┼ SYSTEM
  10. 0100   ─╔═ N$ ╧╞ 6, HI(26)
  11. 0110   STORE(1)
  12. 0120   FULLSCREEN
  13. 0130   PENDOWN
  14. 0140   WINDOW(INQ(19),INQ(20),INQ(21),INQ(22))
  15. 0150   XST:=SCALE(1,1); YST:=SCALE(1,2)
  16. 0160   XEND:=SCALE(2,1); YEND:=SCALE(2,2)
  17. 0170   XN:=SCALE(3,1); YN:=SCALE(3,2)
  18. 0180   XI:=(XEND-XST)/XN; YI:=(YEND-YST)/YN
  19. 0190   // ORIGINS(4 PIXELS TO RT):-
  20. 0200   OX:=INQ(19)+38; OY:=INQ(21)+12
  21. 0210   XSPACE:=INQ(20)-INQ(19); YSPACE:=INQ(22)-INQ(21)
  22. 0220   XPIX:=XSPACE-38-16; YPIX:=YSPACE-12-28 //NUMBERS & LABELS ALLOWED FOR
  23. 0230   PAIRS:=VALUES(0,1) //PAIRS OF DATA
  24. 0240   X'SC:=(XEND-XST)/XPIX //* PIXELS TO CONVERT TO XSCALE
  25. 0250   Y'SC:=(YEND-YST)/YPIX // * PIXELS TP CONVERT TO YSCALE
  26. 0260   TEXTSTYLE(1,1,0,0)
  27. 0270   VIEWPORT(OX,OX+XPIX,OY,OY+YPIX)
  28. 0280   WINDOW(XST,XEND,YST,YEND) //SCALE SET HERE
  29. 0290   ╔╞ HI(14)=╘╥╒┼ ╘╚┼╬
  30. 0300     VIEWPORT(OX-3,OX+XPIX+16,OY+1,OY+YPIX+28)
  31. 0310     CLEAR // INNER AREA
  32. 0320     CROSS'AXES
  33. 0330     ╔╞ VALUES(0,2)=╘╥╒┼ ╘╚┼╬ GRID
  34. 0340   ┼╬─╔╞ 
  35. 0350   VIEWPORT(HI(19),HI(20),HI(21),HI(22))
  36. 0360   ╔╞ HI(16)=╘╥╒┼ ╘╚┼╬ // MISS OUT AXIS IF PENDOWN FALSE
  37. 0370     TICK:=2 //SIZE OF A GRADUATION MARK
  38. 0380     GAP:=4 //GAP BETWEEN TICK AND TEXT
  39. 0390     H:=8 //TEXT HEIGHT
  40. 0400     W:=8 //TEXT WIDTH
  41. 0410     ╞╧╥ AXIS:=0 ╘╧ 1 ─╧
  42. 0420       TEXTSTYLE(1,1,0,1)
  43. 0430       MOVETO(XST-4*X'SC,YST)
  44. 0440       ├┴╙┼ AXIS ╧╞
  45. 0450       ╫╚┼╬ 0
  46. 0460         DRAWTO(XEND+4*X'SC,YST)
  47. 0470         PLOTTEXT(XEND+8*X'SC,YST-5*Y'SC,"X")
  48. 0480       ╫╚┼╬ 1
  49. 0490         MOVETO(XST-4*X'SC,YST)
  50. 0500         DRAWTO(XST-4*X'SC,YEND)
  51. 0510         PLOTTEXT(XST-20*X'SC,YEND+5*Y'SC,"Y")
  52. 0520       ┼╬─├┴╙┼ 
  53. 0530       SCALE'DIVISIONS:=XN
  54. 0540       ╔╞ AXIS=1 ╘╚┼╬ SCALE'DIVISIONS:=YN
  55. 0550       ╞╧╥ I:=0 ╘╧ SCALE'DIVISIONS ─╧
  56. 0560         ├┴╙┼ AXIS ╧╞
  57. 0570         ╫╚┼╬ 0
  58. 0580           HOR:=XST+(XI*I); VERT:=YST
  59. 0590           NUM:=XST+I*XI
  60. 0600         ╫╚┼╬ 1
  61. 0610           HOR:=XST-4*X'SC; VERT:=YST+(YI*I)
  62. 0620           NUM:=YST+I*YI
  63. 0630         ┼╬─├┴╙┼ 
  64. 0640         MOVETO(HOR,VERT)
  65. 0650         N$:=╙╘╥$(NUM)
  66. 0660         L:=╠┼╬(N$)
  67. 0670         L2:=L*.5
  68. 0680         ├┴╙┼ AXIS ╧╞
  69. 0690         ╫╚┼╬ 0 // CONDITIONS FOR LABELS
  70. 0700           TICK:=1
  71. 0710           PX:=HOR-(W*L2*X'SC)
  72. 0720           PY:=VERT-(TICK+GAP+H)*Y'SC
  73. 0730           MOVETO(HOR,YST)
  74. 0740           ╔╞ I=0 ╘╚┼╬
  75. 0750             TICK:=3
  76. 0760             PLOTTEXT(PX,PY,N$)
  77. 0770             END'LAST'NUM:=PX+(W*L*X'SC)
  78. 0780           ┼╠╔╞ PX>END'LAST'NUM+1*X'SC ╘╚┼╬
  79. 0790             TICK:=3
  80. 0800             PLOTTEXT(PX,PY,N$)
  81. 0810             END'LAST'NUM:=PX+(W*L*X'SC)
  82. 0820           ┼╠╙┼ 
  83. 0830             TICK:=1
  84. 0840           ┼╬─╔╞ 
  85. 0850           DRAWTO(HOR,VERT-(TICK*Y'SC))
  86. 0860         ╫╚┼╬ 1
  87. 0870           GAP:=1; TICK:=1
  88. 0880           PX:=HOR-(TICK+GAP+W*L)*X'SC
  89. 0890           PY:=VERT-(H*.5*Y'SC)
  90. 0900           ╔╞ YPIX/YN>10 ╘╚┼╬
  91. 0910             PLOTTEXT(PX,PY,N$)
  92. 0920           ┼╠╔╞ YPIX/YN>5 ┴╬─ I ═╧─ 2=0 ╘╚┼╬
  93. 0930             PLOTTEXT(PX,PY,N$)
  94. 0940           ┼╠╔╞ I ═╧─ 4=0 ╘╚┼╬
  95. 0950             PLOTTEXT(PX,PY,N$)
  96. 0960           ┼╠╙┼ 
  97. 0970             TICK:=3
  98. 0980           ┼╬─╔╞ 
  99. 0990           DRAWTO(HOR-TICK*X'SC,VERT)
  100. 1000         ┼╬─├┴╙┼ 
  101. 1010       ┼╬─╞╧╥ I
  102. 1020     ┼╬─╞╧╥ AXIS
  103. 1030   ┼╬─╔╞ // END OF PENDOWN DRAW AXES
  104. 1040   // DRAW ZERO AXES IF NEEDED
  105. 1050   ╔╞ HI(14)=╞┴╠╙┼ ╘╚┼╬ CROSS'AXES
  106. 1060   // DRAW GRID ONLY IF PENDOWN
  107. 1070   ╔╞ HI(16)=╘╥╒┼ ╘╚┼╬
  108. 1080     ╔╞ VALUES(0,2)=╘╥╒┼ ┴╬─ ╘╚┼╬ TYPE<>1 ╘╚┼╬ GRID
  109. 1090   ┼╬─╔╞ 
  110. 1100   TEXTSTYLE(1,1,0,0) // FOR LABELS
  111. 1110   PLOTTEXT(XST+13*X'SC,YEND+21*Y'SC,LABELS$(0))
  112. 1120   PLOTTEXT(XST-3*X'SC,YEND+13*Y'SC,LABELS$(1))
  113. 1130   PLOTTEXT(XST-3*X'SC,YEND+5*Y'SC,LABELS$(2))
  114. 1140   ├┴╙┼ TYPE ╧╞
  115. 1150   ╫╚┼╬ 1
  116. 1160     SCATTER'GRAPH
  117. 1170   ╫╚┼╬ 2
  118. 1180     LINE'GRAPH
  119. 1190   ╫╚┼╬ 3
  120. 1200     BAR'GRAPH
  121. 1210   ┼╬─├┴╙┼ 
  122. 1220   
  123. 1230   ╨╥╧├ SCATTER'GRAPH 
  124. 1240     VIEWPORT(OX+1,OX+XPIX,OY+1,OY+YPIX)
  125. 1250     ╞╧╥ K:=1 ╘╧ PAIRS ─╧
  126. 1260       PLOT(VALUES(K,1),VALUES(K,2))
  127. 1270     ┼╬─╞╧╥ K
  128. 1280   ┼╬─╨╥╧├ SCATTER'GRAPH
  129. 1290   
  130. 1300   ╨╥╧├ LINE'GRAPH 
  131. 1310     VIEWPORT(OX+1,OX+XPIX,OY+1,OY+YPIX)
  132. 1320     MOVETO(VALUES(1,1),VALUES(1,2))
  133. 1330     ╞╧╥ K:=1 ╘╧ PAIRS ─╧
  134. 1340       DRAWTO(VALUES(K,1),VALUES(K,2))
  135. 1350     ┼╬─╞╧╥ K
  136. 1360   ┼╬─╨╥╧├ LINE'GRAPH
  137. 1370   
  138. 1380   ╨╥╧├ BAR'GRAPH 
  139. 1390     VIEWPORT(OX-3,OX+XPIX+4,OY+1,OY+YPIX+4)
  140. 1400     ╞╧╥ I:=1 ╘╧ PAIRS ─╧
  141. 1410       // PLOT(VALUES(I,1)-5*X'SC,VALUES(I,2)) // KEEP FOR TESTING
  142. 1420       START:=YST; OFFSET:=4*X'SC
  143. 1430       Y'UP:=1*Y'SC
  144. 1440       ╔╞ YST<0 ┴╬─ ╘╚┼╬ YEND>0 ╘╚┼╬ START:=0
  145. 1450       HEIGHT:=VALUES(I,2)
  146. 1460       ╔╞ VALUES(I,2)>YEND ╘╚┼╬ HEIGHT:=YEND
  147. 1470       ╔╞ VALUES(I,2)<YST ╘╚┼╬
  148. 1480         ╔╞ START<>YST ╘╚┼╬
  149. 1490           HEIGHT:=YST+4*Y'SC
  150. 1500         ┼╠╙┼ 
  151. 1510           HEIGHT:=YST
  152. 1520         ┼╬─╔╞ 
  153. 1530       ┼╬─╔╞ 
  154. 1540       PIXELS:=┴┬╙(╔╬╘((HEIGHT-START)/Y'SC))
  155. 1550       ╔╞ PIXELS=0 ╘╚┼╬
  156. 1560         ╬╒╠╠
  157. 1570       ┼╠╔╞ ╙╟╬(VALUES(I,2))=-1 ┴╬─ ╘╚┼╬ START=0 ╘╚┼╬
  158. 1580         TEXTSTYLE(1,PIXELS,2,1)
  159. 1590         PLOTTEXT(VALUES(I,1)+OFFSET,START,├╚╥$(164))
  160. 1600       ┼╠╙┼ 
  161. 1610         TEXTSTYLE(1,PIXELS,0,1)
  162. 1620         PLOTTEXT(VALUES(I,1)-OFFSET,START+Y'UP,├╚╥$(164))
  163. 1630       ┼╬─╔╞ 
  164. 1640       ╔╞ VALUES(I,2)<YST ╘╚┼╬
  165. 1650         TEXTSTYLE(1,1,2,1)
  166. 1660         PLOTTEXT(VALUES(I,1)+OFFSET,YST+6*Y'SC,├╚╥$(94))
  167. 1670       ┼╠╔╞ VALUES(I,2)>YEND ╘╚┼╬
  168. 1680         TEXTSTYLE(1,1,0,1)
  169. 1690         PLOTTEXT(VALUES(I,1)-OFFSET,YEND-2*Y'SC,├╚╥$(94))
  170. 1700       ┼╬─╔╞ 
  171. 1710     ┼╬─╞╧╥ I
  172. 1720     TEXTSTYLE(1,1,0,-1)
  173. 1730   ┼╬─╨╥╧├ BAR'GRAPH
  174. 1740   
  175. 1750   ╨╥╧├ CROSS'AXES 
  176. 1760     ╔╞ ╙╟╬(YST)=-1 ┴╬─ ╘╚┼╬ ╙╟╬(YEND)=1 ╘╚┼╬ // NOT IF PENUP
  177. 1770       MOVETO(XST-4*X'SC,0)
  178. 1780       DRAWTO(XEND+4*X'SC,0)
  179. 1790     ┼╬─╔╞ 
  180. 1800     ╔╞ ╙╟╬(XST)=-1 ┴╬─ ╘╚┼╬ ╙╟╬(XEND)=1 ╘╚┼╬ // NOT IF PENUP
  181. 1810       MOVETO(0,YST)
  182. 1820       DRAWTO(0,YEND)
  183. 1830     ┼╬─╔╞ 
  184. 1840   ┼╬─╨╥╧├ CROSS'AXES
  185. 1850   
  186. 1860   ╨╥╧├ GRID 
  187. 1870     ╔╞ TYPE<>1 ╘╚┼╬
  188. 1880       ╞╧╥ UP:=1 ╘╧ YN ─╧
  189. 1890         ╞╧╥ ALONG:=XST ╘╧ XEND ╙╘┼╨ XI ─╧
  190. 1900           PLOT(ALONG,YST+UP*YI)
  191. 1910         ┼╬─╞╧╥ ALONG
  192. 1920       ┼╬─╞╧╥ UP
  193. 1930     ┼╬─╔╞ 
  194. 1940   ┼╬─╨╥╧├ GRID
  195. 1950   
  196. 1960   ╨╥╧├ STORE(HOLD) 
  197. 1970     ├┴╙┼ HOLD ╧╞
  198. 1980     ╫╚┼╬ ╘╥╒┼
  199. 1990       ╞╧╥ K:=7 ╘╧ 26 ─╧
  200. 2000         HI(K):=INQ(K)
  201. 2010       ┼╬─╞╧╥ K
  202. 2020     ╫╚┼╬ ╞┴╠╙┼ //ENTER AS NEEDED
  203. 2030       TEXTSTYLE(HI(7),HI(8),HI(9),HI(10))
  204. 2040       VIEWPORT(HI(19),HI(20),HI(21),HI(22))
  205. 2050       WINDOW(HI(23),HI(24),HI(25),HI(26))
  206. 2060     ┼╬─├┴╙┼ 
  207. 2070   ┼╬─╨╥╧├ STORE
  208. 2080   STORE(0) // RESET VALUES
  209. 2090 ┼╬─╨╥╧├ GRAPH
  210. 2100 
  211.